<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数</title>
</head>
<body>
<script>
  //函数的定义
  function app(a,b){
    let c=0;
    for(let i =a;i<b;i++){
      c+=i;
    }
    console.log(c)
  }
  //函数的调用
  app(1,100)

  //函数的参数可以不匹配，但是最终的结果无法预计，所以要正确匹配参数个数

  //函数的返回值
  function ass(a,b){
    return a+b
  }

  console.log(ass(1,2))
  //函数的返回值表示将最终的结果赋值给函数，如果不主动输出值，则值不会自动输出

  //当不知道用户会传递几个实参的时候，会用到arguments数组，该数组为函数内置数组，将存储用户输入的所有形参并进行遍历，只取与形参相应的实参个数
  //求任意个数的最大值
  function max(){
    let max=arguments[0]//从第一位开始比较，所以最终的赋值变量可以设置为数组第一位
    for(let i=0;i<arguments.length;i++){
      if(arguments[i]>max){//循环对比，如果数组的后面有更大的，则更新变量的赋值
        max=arguments[i]
      }
    }
    console.log(max)
  }
  //因为是内置的保存了所有实参的数组，所以无论输入多少的实参都可以进行对比
  max(1,2)
  max(1,2,3)

  //函数是可以相互调用的
  {
    function a1(){
      console.log(11)
    }
    function a2(){
      //在函数内调用另一个函数
      a1()
      console.log(22)
    }
    a2()
  }

  //匿名函数
  {
    //函数名等于变量名，没有显式的定义函数名，而是使用了变量名进行封装的函数，调用的函数也是直接调用变量名即可
    let a=function (){
      console.log(11)
    }
    a()
  }
</script>
</body>
</html>